home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1996-06-21 | 21.7 KB | 736 lines | [TEXT/MEDT] |
- IMPLEMENTATION MODULE DMDebugHelp ;
-
- (*
-
- Implementation and Revisions:
- ============================
-
- DM_V2.0 for MacMETH_V2.6+ 1-pass-compiler
-
- Author Date Description
- ------ ---- -----------
-
- af 16/11/89 First implementation (DM 1.1,
- MacMETH 2.6+)
- HA 20/12/89 DM V2.0, MacMETH V2.6+
- af 12/02/91 PutMessageOnTop and PutMessageToBack
- added
- af 29/01/92 PutMessageToBack is new default
- dg 14/02/92 DM V2.2, MacMETH V3.2
- af 01/04/92 Support for file writing
- af 05/04/92 WriteDataStructure added to
- implement e.g. ReportOnEvent
- af 23/06/93 GetModuleIdent added
- af&dg 19/04/96 Now uses only DMWindIO instead of
- DMWindowIO for PC compatibility
-
- --- END OF MODULE HISTORY --- *)
-
-
- FROM SYSTEM IMPORT SETREG, ADR, INLINE, ADDRESS, VAL, BYTE;
- IMPORT DMQuickDraw;
- IMPORT FileSystem;
- IMPORT FileUtil;
-
- CONST
-
- (* event codes Inside Mac I-263 *)
- nullEvent = 0;
- mouseDown = 1;
- mouseUp = 2;
- keyDown = 3;
- keyUp = 4;
- autoKey = 5;
- updateEvt = 6;
- diskEvt = 7;
- activateEvt = 8;
- networkEvt = 10;
- driverEvt = 11;
- app1Evt = 12;
- app2Evt = 13;
- app3Evt = 14;
- app4Evt = 15;
- osEvt = app4Evt;
- kHighLevelEvent = 23; (* Inside Mac VI 5-21 *) (* helps to avoid import
- of DMSys7Events *)
-
- (* event masks Inside Mac I-263 *)
- everyEvent = -1;
- mDownMask = 2;
- mUpMask = 4;
- keyDownMask = 8;
- keyUpMask = 16;
- autoKeyMask = 32;
- updateMask = 64;
- diskMask = 128;
- activMask = 256;
- networkMask = 1024;
- driverMask = 2048;
- app1Mask = 4096;
- app2Mask = 8192;
- app3Mask = 16384;
- app4Mask = -32767-1;
- osEvtMask = app4Mask;
-
- (* modifiers *)
- btnState = {7}; (*Bit 7 of low byte is mouse button state*)
- cmdKey = {8}; (*Bit 0 of high byte*)
- shiftKey = {9}; (*Bit 1 of high byte*)
- alphaLock = {10}; (*Bit 2 of high byte*)
- optionKey = {11}; (*Bit 3 of high byte*)
- controlKey = {12}; (*Bit 4 of high byte*)
-
- Monaco = 4;
- altDBoxProc = 3;
-
- activeFlag = 0; (*bit 0 of modifiers for activate event*)
-
-
- TYPE
- SignedByte = BYTE; (* any byte in memory *)
- Byte = BYTE; (* unsigned byte for fontmgr *)
- Ptr = POINTER TO SignedByte; (* blind pointer *)
- Handle = POINTER TO Ptr; (* pointer to a master pointer *)
- ProcPtr = Ptr; (* pointer to a procedure *)
- Fixed = LONGINT; (* fixed point arithmetic type *)
-
- Str255 = ARRAY [0..255] OF CHAR; (* maximum string size *)
- StringPtr = POINTER TO Str255; (* pointer to maximum string *)
- StringHandle = POINTER TO StringPtr; (* handle to maximum string *)
- OSType = ARRAY [0..3] OF CHAR;
- VHSelect = (v,h);
- VHSelectR = [v..h];
- Point = RECORD
- CASE :INTEGER OF
- 0: v: INTEGER;
- h: INTEGER;
- | 1: vh: ARRAY VHSelectR OF INTEGER;
- END;
- END;
- EventRecord = RECORD
- what: INTEGER;
- CASE: INTEGER OF
- 1: message: LONGINT;|
- 2: msgchar: ARRAY [0..3] OF CHAR;|
- 3: eventClass: OSType;|
- 4: eventClassLongInt: LONGINT;
- END(*CASE*);
- when: LONGINT;
- CASE: INTEGER OF
- 1: where: Point;|
- 2: eventID: OSType; |
- 3: eventIDLongInt: LONGINT;
- END(*CASE*);
- CASE: INTEGER OF
- 1: modifiers: BITSET; |
- 2: modifwrd: CARDINAL; (* modifier word *) |
- 3: msgVal: INTEGER;
- END(*CASE*);
- END(*RECORD*);
-
- ControlPtr = POINTER TO ControlRecord;
- ControlHandle = POINTER TO ControlPtr;
-
- WindowPtr = DMQuickDraw.GrafPtr;
- WindowPeek = POINTER TO WindowRecord;
- WindowRecord =
- RECORD
- port: DMQuickDraw.GrafPort;
- windowKind: INTEGER;
- visible: BOOLEAN;
- hilited: BOOLEAN;
- goAwayFlag: BOOLEAN;
- spareFlag: BOOLEAN;
- strucRgn: DMQuickDraw.RgnHandle;
- contRgn: DMQuickDraw.RgnHandle;
- updateRgn: DMQuickDraw.RgnHandle;
- windowDefProc: Handle;
- dataHandle: Handle;
- titleHandle: StringHandle;
- titleWidth: INTEGER;
- ControlList: ControlHandle;
- nextWindow: WindowPeek;
- windowPic: DMQuickDraw.PicHandle;
- refCon: LONGINT;
- END;
-
- ControlRecord =
- RECORD
- nextControl: ControlHandle;
- contrlOwner: WindowPtr;
- contrlRect: DMQuickDraw.Rect;
- contrlVis: BOOLEAN;
- contrlHilite: BOOLEAN;
- contrlValue: INTEGER;
- contrlMin: INTEGER;
- contrlMax: INTEGER;
- contrlDefProc: Handle;
- contrlData: Handle;
- contrlAction: ProcPtr;
- contrlrfCon: LONGINT;
- contrlTitle: Str255;
- END; (* ControlRecord *)
-
- PROCEDURE ToolboxDrawString(VAR theString: Str255); CODE 0A884H;
-
- PROCEDURE GetNextEvent(mask:INTEGER;
- VAR theEvent: EventRecord): BOOLEAN; CODE 0A970H;
-
- VAR toolboxString: Str255;
-
- PROCEDURE NewWindow (wStorage : Ptr;
- VAR boundsRect: DMQuickDraw.Rect;
- title : ARRAY OF CHAR;
- visible : BOOLEAN;
- theProc: INTEGER;
- behind: WindowPtr;
- goAwayFlag: BOOLEAN;
- refCon: LONGINT): WindowPtr;
-
- PROCEDURE ToolboxNewWindow(wStorage : Ptr;
- VAR boundsRect: DMQuickDraw.Rect;
- VAR title : Str255;
- visible : BOOLEAN;
- theProc: INTEGER;
- behind: WindowPtr;
- goAwayFlag: BOOLEAN;
- refCon: LONGINT): WindowPtr; CODE 0A913H;
-
- BEGIN (* NewWindow *)
- DMQuickDraw.ArrToStr(title,toolboxString);
- RETURN ToolboxNewWindow(wStorage, boundsRect, toolboxString, visible,
- theProc, behind, goAwayFlag, refCon);
- END NewWindow;
-
- PROCEDURE HideWindow (theWindow: WindowPtr); CODE 0A916H;
- PROCEDURE DisposeWindow (theWindow: WindowPtr); CODE 0A914H;
-
-
-
-
- CONST lemarg = 4;
- VAR charH: INTEGER; title: Str255; posInList: ADDRESS;
- repFOpen: BOOLEAN; repF: FileSystem.File;
-
-
- (*. PROCEDURE PutMessageOnTop;
- BEGIN
- posInList := -1D; (*first window in list*)
- END PutMessageOnTop;
- .*)
- PROCEDURE PutMessageToBack;
- BEGIN
- posInList := NIL; (*last window in list*)
- END PutMessageToBack;
-
-
-
- PROCEDURE Write(ch: CHAR);
- BEGIN
- IF repFOpen THEN
- FileSystem.WriteChar(repF,ch);
- ELSE
- DMQuickDraw.ToolboxDrawChar(ORD(ch));
- END(*IF*);
- END Write;
-
- PROCEDURE WriteString(s: ARRAY OF CHAR);
- VAR macStr: Str255; i,n: INTEGER;
- BEGIN
- IF repFOpen THEN
- i:= 0; n:= HIGH(s);
- WHILE (i<=n) AND (s[i]<>0C) DO
- FileSystem.WriteChar(repF,s[i]); INC(i)
- END(*WHILE*);
- ELSE
- DMQuickDraw.ArrToStr(s,macStr); ToolboxDrawString(macStr);
- END(*IF*);
- END WriteString;
-
- PROCEDURE WriteLn;
- CONST EOL = 15C (*ASCII CR on Mac*); VAR p: DMQuickDraw.Point;
- BEGIN
- IF repFOpen THEN
- FileSystem.WriteChar(repF,EOL);
- ELSE
- DMQuickDraw.GetPen(p);
- DMQuickDraw.MoveTo(lemarg,p.v+charH);
- END(*IF*);
- END WriteLn;
-
- PROCEDURE WriteInt(x: LONGINT; n: CARDINAL);
- VAR x0: LONGCARD; i,d: CARDINAL;
- a: ARRAY [0..14] OF CHAR;
- BEGIN i := 0; x0 := ABS(x);
- REPEAT
- d := x0 MOD 10D;
- a[i] := VAL(CHAR,d + 60B);
- x0 := x0 DIV 10D; INC(i);
- UNTIL x0 = 0D;
- IF x < 0D THEN a[i] := "-"; INC(i) END ;
- WHILE n > i DO
- DEC(n); Write(" ")
- END ;
- REPEAT DEC(i); Write(a[i]) UNTIL i = 0
- END WriteInt;
-
- PROCEDURE CopyString (from: ARRAY OF CHAR; i1: INTEGER;
- VAR to: ARRAY OF CHAR; VAR i2: INTEGER);
- VAR n1,n2: INTEGER;
- BEGIN
- n1 := HIGH(from); n2 := HIGH(to);
- WHILE (i1<=n1) AND (from[i1]<>0C) AND (i2<=n2) DO
- to[i2] := from[i1]; INC(i1); INC(i2);
- END(*WHILE*);
- IF i2<=n2 THEN to[i2] := 0C END;
- END CopyString;
-
-
- PROCEDURE IntToString(x: LONGINT; VAR str: ARRAY OF CHAR; n: CARDINAL);
- VAR x0: LONGCARD; i,d: CARDINAL; j: INTEGER;
- a: ARRAY [0..14] OF CHAR;
- PROCEDURE Copy(ch: CHAR);
- BEGIN
- IF j<=HIGH(str) THEN str[j] := ch; INC(j); END;
- END Copy;
- BEGIN (*IntToString*)
- i := 0; x0 := ABS(x);
- REPEAT
- d := x0 MOD 10D;
- a[i] := VAL(CHAR,d + 60B);
- x0 := x0 DIV 10D; INC(i);
- UNTIL x0 = 0D;
- IF x < 0D THEN a[i] := "-"; INC(i) END ;
- j := 0;
- WHILE n > i DO
- DEC(n); Copy(" ")
- END ;
- REPEAT DEC(i); Copy(a[i]) UNTIL i = 0;
- Copy(0C);
- END IntToString;
-
-
-
- PROCEDURE DocuDateAndTime;
-
- CONST
- (* registers on 680xx CPUs *)
- A0 = 8; D0 = 0;
-
- TYPE
- Months = INTEGER;
- WeekDays = INTEGER;
- DateAndTimeRec =
- RECORD
- year: INTEGER; (* 1904,1905,...2040 *)
- month: Months;
- day, (* 1,...31 *)
- hour, (* 0,...,23 *)
- minute, (* 0,...,59 *)
- second: INTEGER; (* 0,...,59 *)
- dayOfWeek: WeekDays;
- END;
-
- VAR year,month,day,weekday, hour,minute,sec: INTEGER;
-
- PROCEDURE SecondsToDate (secs: LONGINT; VAR d: DateAndTimeRec);
- CONST secsToDate = 0A9C6H;
- BEGIN
- SETREG(D0,secs);
- SETREG(A0,ADR(d)); (* error in 'Inside Macintosh' *)
- INLINE(secsToDate)
- END SecondsToDate;
-
- PROCEDURE NowInSeconds (): LONGINT;
- CONST Time = 20CH;
- VAR secs: POINTER TO LONGINT;
- BEGIN
- secs := VAL(ADDRESS,Time);
- RETURN secs^
- END NowInSeconds;
-
- PROCEDURE GetTime(VAR d: DateAndTimeRec);
- BEGIN
- SecondsToDate(NowInSeconds(),d)
- END GetTime;
-
- PROCEDURE Today (VAR year, month, day, dayOfWeek: INTEGER);
- VAR dt: DateAndTimeRec;
- BEGIN
- GetTime(dt);
- year := dt.year;
- month := dt.month;
- day := dt.day;
- dayOfWeek := dt.dayOfWeek;
- END Today;
-
- PROCEDURE Now (VAR hour(* 0..23 *), minute, second: INTEGER);
- VAR dt: DateAndTimeRec;
- BEGIN
- GetTime(dt);
- hour := dt.hour;
- minute := dt.minute;
- second := dt.second;
- END Now;
- PROCEDURE WriteLeadZeroInt(x: INTEGER);
- BEGIN
- WriteInt(x DIV 10,0);
- WriteInt(x MOD 10,0);
- END WriteLeadZeroInt;
- BEGIN
- Today(year,month,day,weekday);
- Now(hour,minute,sec);
- WriteInt(day,0); Write("/");
- WriteInt(month,0); Write("/");
- WriteInt(year,0); WriteString(" ");
- WriteLeadZeroInt(hour); Write("h");
- WriteLeadZeroInt(minute); Write(":");
- WriteLeadZeroInt(sec);
- END DocuDateAndTime;
-
-
- PROCEDURE MessageWindow (x,y,w,h: INTEGER; p: PROC);
- CONST wkind = altDBoxProc;
- VAR
- wr: DMQuickDraw.Rect;
- ptr: WindowPtr; savePort: DMQuickDraw.GrafPtr;
- theEvent: EventRecord; gotAnEvent: BOOLEAN;
- info: DMQuickDraw.FontInfo;
- BEGIN
- DMQuickDraw.GetPort(savePort);
- DMQuickDraw.SetRect(wr,x,y+10+20(*menu bar*),x+w,y+10+20(*menu bar*)+h);
- title:= " Debug Messages"; (*. title[0] := 16C; .*)
- ptr:=NewWindow(NIL,wr,title,
- TRUE,wkind,posInList,
- FALSE(*no close box*),0D);
- DMQuickDraw.SetPort(ptr);
- DMQuickDraw.TextFont(Monaco);
- DMQuickDraw.TextSize(9);
- DMQuickDraw.GetFontInfo(info);
- charH := info.ascent + info.descent + info.leading;
- DMQuickDraw.MoveTo(lemarg,lemarg); WriteLn;
- WriteString("(Use keyboard to remove me)"); WriteLn; WriteLn;
- p;
- (*just ignore the deactivate event for the
- window to be removed, and all subsequent deactivate, activate events
- for the windows below*)
- REPEAT
- gotAnEvent:= GetNextEvent((*. everyEvent .*)keyDownMask+autoKeyMask,theEvent);
- UNTIL gotAnEvent AND
- ((theEvent.what = mouseDown) OR (theEvent.what = keyDown)
- OR (theEvent.what = autoKey));
- HideWindow(ptr);
- DisposeWindow(ptr);
- (*. REPEAT UNTIL NOT GetNextEvent(activateEvt,theEvent); .*)
- DMQuickDraw.SetPort(savePort);
- END MessageWindow;
-
- PROCEDURE StartReportOnFile(fileName, msg: ARRAY OF CHAR);
- BEGIN
- IF NOT repFOpen THEN
- FileSystem.Lookup(repF,fileName,TRUE);
- repFOpen := repF.res = FileSystem.done;
- WriteString("Report started ");
- WriteString(msg);
- WriteString(" calling DMDebugHelp.StartReportOnFile ");
- DocuDateAndTime;
- WriteLn; WriteLn;
- END(*IF*);
- END StartReportOnFile;
-
- PROCEDURE CloseReportFile(msg: ARRAY OF CHAR);
- BEGIN
- IF repFOpen THEN
- WriteString("Report ended ");
- WriteString(msg);
- WriteString(" calling DMDebugHelp.CloseReportFile ");
- DocuDateAndTime;
- WriteLn; WriteLn;
- FileSystem.Close(repF);
- repFOpen := FALSE;
- END(*IF*);
- END CloseReportFile;
-
-
-
-
- PROCEDURE WriteDataStructure(VAR x: ARRAY OF BYTE;
- isInForeGround: BOOLEAN; dummy: LONGINT;
- msg: ARRAY OF CHAR);
- VAR
- theEvent: POINTER TO EventRecord; oldIsInForeGround: BOOLEAN;
- PROCEDURE WriteMsg(message: LONGINT);
- BEGIN
- WriteString(" message = ");
- WriteInt(message,0);
- END WriteMsg;
- PROCEDURE WriteWhere(where: Point);
- BEGIN
- WriteString(" / where = ");
- WriteInt(where.h,0);
- WriteString(" (h), ");
- WriteInt(where.v,0);
- WriteString(" (v)");
- END WriteWhere;
- PROCEDURE WriteModif(modifwrd: CARDINAL);
- CONST (* Inside Mac I-252 *) mouseButUp = 7;
- cmdPressed = 8; shiftPressed = 9; capsLocked = 10; optPressed = 11;
- ctrlPressed = 12;
- VAR m: BITSET; listStarted: BOOLEAN;
- PROCEDURE AddToList(s: ARRAY OF CHAR);
- BEGIN
- IF listStarted THEN WriteString(", ") END(*IF*);
- WriteString(s);
- listStarted := TRUE;
- END AddToList;
- BEGIN
- WriteString(" / modifwrd = ");
- m := VAL(BITSET,modifwrd);
- listStarted := FALSE;
- IF cmdPressed IN m THEN AddToList("Cmd") END;
- IF optPressed IN m THEN AddToList("Opt") END;
- IF shiftPressed IN m THEN AddToList("Shift") END;
- IF capsLocked IN m THEN AddToList("CapsLock") END;
- IF ctrlPressed IN m THEN AddToList("Ctrl") END;
- IF NOT (mouseButUp IN m) THEN AddToList("Mousy") END;
- m := m - {mouseButUp, cmdPressed, shiftPressed, capsLocked, optPressed, ctrlPressed};
- IF m <> {} THEN
- WriteString(" / modifwrd = ");
- WriteInt(modifwrd,0);
- END(*IF*);
- END WriteModif;
- PROCEDURE WriteHighLevEvent;
- BEGIN
- WriteString(" eventClass = '"); WriteString(theEvent^.eventClass); Write("'");
- WriteString(" / eventID = '"); WriteString(theEvent^.eventID); Write("'");
- WriteString(" / msgVal = "); WriteInt(theEvent^.msgVal,0);
- END WriteHighLevEvent;
- PROCEDURE DoOsEvt(message: LONGINT);
- VAR msg : RECORD CASE : BOOLEAN OF TRUE: m: LONGINT; | FALSE: b1,b2,b3,b4: CHAR (*hi,lo*) END END;
- (* flag «Accept suspend events» in SIZE resource of shell must be set on to
- properly maintain isInForeGround. See Inside Mac VI 5-15. *)
- BEGIN
- msg.m := message;
- isInForeGround := ODD(ORD(msg.b1)) AND ODD(ORD(msg.b4)); (* Inside Mac VI 5-20 *)
- END DoOsEvt;
- BEGIN (*WriteDataStructure*)
- WriteString(msg);
- theEvent := ADR(x);
- IF theEvent^.what = osEvt THEN
- oldIsInForeGround := isInForeGround;
- DoOsEvt(theEvent^.message);
- END(*IF*);
- WriteString(": isInForeGround = ");
- IF isInForeGround THEN
- WriteString("TRUE")
- ELSE
- WriteString("FALSE")
- END;
- WITH theEvent^ DO
- WriteString(" theEvent.when = ");
- WriteInt(when,0);
- WriteLn;
- WriteString(" theEvent.what = ");
- WriteInt(what,0);
- CASE what OF
- mouseDown :
- WriteString(" (mouseDown)");
- WriteMsg(message);
- WriteWhere(where);
- | mouseUp :
- WriteString(" (mouseUp)");
- WriteMsg(message);
- WriteWhere(where);
- | keyDown :
- WriteString(" (keyDown)");
- WriteString(" msgchar[3] = '");
- Write(msgchar[3]); Write("'");
- WriteString(" [ORD(msgchar[2]) = ");
- WriteInt(ORD(msgchar[2]),0); Write("]");
- WriteModif(modifwrd);
- | updateEvt :
- WriteString(" (updateEvt)");
- WriteMsg(message);
- | activateEvt :
- IF activeFlag IN modifiers THEN
- WriteString(" (activateEvt)");
- ELSE
- WriteString(" (deactivateEvt)");
- END(*IF*);
- WriteMsg(message);
- | kHighLevelEvent :
- WriteString(" (kHighLevelEvent)");
- WriteHighLevEvent;
- | osEvt :
- WriteString(" (osEvt)");
- IF oldIsInForeGround<>isInForeGround THEN
- IF oldIsInForeGround THEN
- WriteString("From foreground =•=> background");
- ELSE
- WriteString("From background =•=> foreground");
- END(*IF*);
- ELSE
- WriteMsg(message);
- END(*IF*);
- ELSE
- WriteString(" (other)");
- WriteMsg(message);
- WriteWhere(where);
- END(*CASE*);
- WriteLn;
- WriteLn;
- END(*WITH*);
- END WriteDataStructure;
-
-
-
-
- PROCEDURE GetModuleIdent(moduleID: INTEGER; VAR modId: ARRAY OF CHAR);
-
- (*
- ATTENTION!!! The following const. must be the same as those exported by DMBase
- *)
-
- CONST maxKernelMod = 15; (* must be consistent with const declarations below *)
- maxOptMod = 16; (* must be consistent with const declarations below *)
- doImmediately = 0;
- noBody = 0;
-
- (* Dialog Machine Kernel *)
-
- (* modules without body *)
- dmPathBase = noBody;
- dmLinkLoader = noBody;
- dmMemTypes = noBody;
- dmDebugHelp = noBody;
- dmSys7Events = noBody;
-
- (* modules with body, but otherwise very special *)
- dmQuickDraw = 0; (* has actually a body, but must be initialized before DMBase *)
- dmLevels = 0; (* has a body which can be initialized anytime, and should be initialized
- before all other modules except DMQuickDraw and DMBase *)
- dmHeapWatch = 0; (* has a body, which requires DMLevels, but since imported by DMStorage
- will be initialized automatically very early *)
- dmStorage = 0; (* has a body which must be initialized right after DMLevels,
- and must be initialized before all other modules (except
- DMQuickDraw) *)
- dmBase = 0; (* has a body which must be initialized after DMQuickDraw and
- can be initialized before all others, even DMLevels, and
- DMStorage, however it imports from them *)
-
- dmStrings = 1;
- dmWindowBase = 2;
- dmDlgBase = 3;
- dmConversions = 4;
- dmHandlers = 5;
- dmMasterBase = 6;
- dmMenuBase = 7;
- dmLanguage = 8;
- dmSystem = 9;
- dmMessages = 10;
- dmWindows = 11;
- dmWindowIO = 12;
- dmMaster = 13;
- dmMenus = 14;
- dmWindIO = 15;
-
-
- (* optional modules:
-
- • the body must not be initialized before the kernel (= maxKernelMod + x). There initialization
- Initialization routines are kept and executed only after the
- kernel is ready and in the sequenceof the constants given
- below.
-
- • without body ( = noBody)
-
- • body requires no precondition and can be initialized
- immediately (= doImmediately)
- *)
-
-
- dmMathLib = noBody; (*. no longer part of the kernel .*)
- dmMathLib20 = noBody;
- dmTxtResBase = noBody;
- dmClock = noBody;
- dmQuestions = noBody;
- dmResBase = noBody;
- dmPrintBase = noBody;
- dmHFSBase = noBody;
- dmWPicIOBase = noBody;
-
- dmFileNames = doImmediately;
- dmWTextIOBase = doImmediately;
- dmPTFiles = doImmediately;
-
- dmFiles = maxKernelMod + 1;
- dmErrorMsgs = maxKernelMod + 2;
- dmDlgErrors = maxKernelMod + 3;
- dmAlerts = maxKernelMod + 4;
- dmEntryForms = maxKernelMod + 5;
- dmEFBase = maxKernelMod + 6;
- dmEditFields = maxKernelMod + 7;
- dmTextFields = maxKernelMod + 8;
- dmResources = maxKernelMod + 9;
- dmClipboard = maxKernelMod + 10;
- dmWPictIO = maxKernelMod + 11;
- dmWTextIO = maxKernelMod + 12;
- dmPrinting = maxKernelMod + 13;
- dmOpSys = maxKernelMod + 14;
- dmSANEEnv = maxKernelMod + 15;
- dm2DGraphs = maxKernelMod + 16;
- VAR i: INTEGER;
- BEGIN (* GetModuleIdent *)
- i := 0;
- CASE moduleID OF
- | noBody: CopyString('noBody or doImmediately',0,modId,i);
- | dmStrings : CopyString('DMStrings',0,modId,i);
- | dmWindowBase : CopyString('DMWindowBase',0,modId,i);
- | dmDlgBase : CopyString('DMDlgBase',0,modId,i);
- | dmConversions : CopyString('DMConversions',0,modId,i);
- | dmHandlers : CopyString('DMHandlers',0,modId,i);
- | dmMasterBase : CopyString('DMMasterBase',0,modId,i);
- | dmMenuBase : CopyString('DMMenuBase',0,modId,i);
- | dmLanguage : CopyString('DMLanguage',0,modId,i);
- | dmSystem : CopyString('DMSystem',0,modId,i);
- | dmMessages : CopyString('DMMessages',0,modId,i);
- | dmWindows : CopyString('DMWindows',0,modId,i);
- | dmWindowIO : CopyString('DMWindowIO',0,modId,i);
- | dmMaster : CopyString('DMMaster',0,modId,i);
- | dmMenus : CopyString('DMMenus',0,modId,i);
- | dmWindIO : CopyString('DMWindIO',0,modId,i);
- | dmFiles : CopyString('DMFiles',0,modId,i);
- | dmDlgErrors : CopyString('DMDlgErrors',0,modId,i);
- | dmAlerts : CopyString('DMAlerts',0,modId,i);
- | dmEntryForms : CopyString('DMEntryForms',0,modId,i);
- | dmEFBase : CopyString('DMEFBase',0,modId,i);
- | dmEditFields : CopyString('DMEditFields',0,modId,i);
- | dmTextFields : CopyString('DMTextFields',0,modId,i);
- | dmResources : CopyString('DMResources',0,modId,i);
- | dmClipboard : CopyString('DMClipboard',0,modId,i);
- | dmWPictIO : CopyString('DMWPictIO',0,modId,i);
- | dmWTextIO : CopyString('DMWTextIO',0,modId,i);
- | dmPrinting : CopyString('DMPrinting',0,modId,i);
- | dmOpSys : CopyString('DMOpSys',0,modId,i);
- | dmSANEEnv : CopyString('DMSANEEnv',0,modId,i);
- | dm2DGraphs : CopyString('DM2DGraphs',0,modId,i);
- ELSE
- CopyString('unknown',0,modId,i);
- END(*CASE*);
- i := 0; CopyString(modId,0,lastModuleID,i);
- END GetModuleIdent;
-
-
- PROCEDURE Message(s1,s2: ARRAY OF CHAR);
- BEGIN
- (*. FileUtil.Message(s1,s2); .*)
- END Message;
-
-
- BEGIN
- PutMessageToBack;
- repFOpen := FALSE;
- lastModuleID[0] := 0C;
- END DMDebugHelp .
-